import { request } from "../../request/index.js";

Page({
  data: {
    //左侧的菜单数据
    leftMenuList:[],
    //右侧的商品数据
    rightContent:[],
    //被点击的左侧菜单
    currentIndex:0,
    //右侧点击跳到最顶部
    scrollTop:0
  },
  //接口的返回数据
  Cates:[],
  //options(Object)
  onLoad: function(options){
    /**思路：
     * 1-先判断本地存储中有没有旧的数据
     * ----存储格式{time:Data.now(),data[...]}
     * 2-没有旧的数据，直接发送新的请求
     * 3-有旧的数据，若旧的数据没有过期，就使用本地存储的旧数据
     */
    //this.getCates();
    /**操作：
     * 1-获取本地存储中的数据（小程序中也是存在本地存储技术的）
     * 2-判断数据是否存在
     */
    const Cates=wx.getStorageSync("cates");//1--cates作为标志
    if(!Cates){//2-不存在
      this.getCates();
    }else{
      //有旧的数据 定义过期时间 10s
      if(Date.now()-Cates.time>1000*10){
        //重新发送请求
        this.getCates();
      }else{
        //使用旧的数据
        this.Cates=Cates.data;
        //this.Cates=全局变量定义的数组；Cates=获取本地存储的变量
          //构造左侧的大菜单数据
        let leftMenuList=this.Cates.map(v=>v.cat_name);
          //构造右侧的商品数据
        let rightContent=this.Cates[0].children;
        this.setData({
          leftMenuList,
          rightContent
        })
      }
    }
  },
  //获取分类数据
  async getCates(){
    /*request({
      url:"/categories"
    }).then(res=>{
      this.Cates=res.data.message;
      //将获取的数据写入本地存储中
      wx.setStorageSync("cates", {time:Date.now(),data:this.Cates});
      //构造左侧的大菜单数据
      let leftMenuList=this.Cates.map(v=>v.cat_name);
      //构造右侧的商品数据
      let rightContent=this.Cates[0].children;
      this.setData({
        leftMenuList,
        rightContent
      })
    })*/
    const res=await request({url:"/categories"});
    //this.Cates=res.data.message;
    this.Cates=res;//已经封装好了
      //将获取的数据写入本地存储中
      wx.setStorageSync("cates", {time:Date.now(),data:this.Cates});
      //构造左侧的大菜单数据
      let leftMenuList=this.Cates.map(v=>v.cat_name);
      //构造右侧的商品数据
      let rightContent=this.Cates[0].children;
      this.setData({
        leftMenuList,
        rightContent
      })
  },
  //左侧菜单栏点击事件
  handleItem(e){
    /**
     * 1-获取被点击标题的索引
     * 2-给data中的currentIndex赋值
     * 3-根据不同的索引来渲染右侧的商品内容
     */
    const {index}=e.currentTarget.dataset;
    //构造右侧的商品数据
    let rightContent=this.Cates[index].children;
    this.setData({
      currentIndex:index,
      rightContent,
      //设置调回最顶部
      scrollTop:0
    })
  }
});